Ga naar hoofdinhoud Ga naar aanvullende inhoud

For each..next

De besturingsopdracht for each..next is een herhalingsconstructie voor gebruik in scripts waarmee een of meer opdrachten worden uitgevoerd voor elke waarde in een door komma's gescheiden lijst. De opdrachten in de lus tussen for en next worden uitgevoerd voor elke waarde van de lijst.

Syntaxis:  

Door een speciale syntaxis kunnen lijsten worden gegenereerd met namen van bestanden en mappen in de huidige map.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Argumenten:  

Argumenten
ArgumentBeschrijving
varDe naam van een scriptvariabele die een nieuwe waarde uit de lijst ophaalt, telkens wanneer de lus wordt uitgevoerd. Als var wordt opgegeven na next moet de variabele dezelfde naam hebben als de variabele die wordt gevonden na de overeenkomende for each.

De waarde van de var kan worden gewijzigd door opdrachten binnen de lus. Dit is echter met het oog op de gebruikelijke manier van programmeren niet aan te raden.

Als een clausule exit for binnen de lus wordt aangetroffen, gaat de uitvoering van het script over op de eerste opdracht na de clausule next die het einde van de lus aangeeft. De clausule exit for kan voorwaardelijk worden gemaakt met het optionele suffix when of unless.

InformatieOmdat de instructie for each..next een besturingsopdracht is en dus wordt afgesloten door een puntkomma of het einde van een regel, mag geen van de drie mogelijke clausules ervan (for each, exit for en next) de regelgrens overschrijden.

Syntaxis:  

list := item { , item }

item := constant | (expression) | filelist mask | dirlist mask | fieldvaluelist mask

 

Argumenten
ArgumentBeschrijving
constantElk getal of elke tekenreeks. Een tekenreeks die rechtstreeks in het script wordt opgenomen moet tussen enkele aanhalingstekens worden geplaatst. Een tekenreeks zonder enkele aanhalingstekens wordt geïnterpreteerd als een variabele en vervolgens wordt de waarde van de variabele gebruikt. Getallen hoeven niet tussen enkele aanhalingstekens te worden geplaatst.
expressionEen willekeurige uitdrukking.
mask

Een masker voor de naam van een bestand of map die geldige tekens voor bestandsnamen plus de standaardjokertekens, * en ?, kan bevatten.

U kunt absolute bestandspaden of paden lib:// gebruiken.

conditionEen logische uitdrukking die resulteert in True of False.
statementsEen willekeurige groep van een of meer Qlik Sense-scriptopdrachten.
filelist mask

Deze syntaxis produceert een lijst met door komma's gescheiden namen van alle bestanden in de huidige map die overeenkomen met het bestandsnaammasker.

InformatieDit argument ondersteunt alleen bibliotheekverbindingen in de standaardmodus. Zie Beperking van toegang tot bestandssysteem
dirlist mask

Deze syntaxis produceert een lijst met door komma's gescheiden namen van alle mappen in de huidige map die overeenkomen met het mapnaammasker.

InformatieDit argument ondersteunt alleen bibliotheekverbindingen in de standaardmodus. Zie Beperking van toegang tot bestandssysteem
fieldvaluelist maskDeze syntaxis itereert door de waarden van een veld die al in Qlik Sense zijn geladen.
WaarschuwingDe Qlik Connectoren van internetopslagprovider en andere DataFiles-verbindingen bieden geen ondersteuning voor filtermaskeringen die jokertekens (* en ?) gebruiken.

Voorbeeld 1: Een lijst van bestanden laden

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Voorbeeld 2: Een lijst van bestanden maken op schijf

Via dit voorbeeld wordt een lijst met alle aan Qlik Sense gerelateerde bestanden in een map geladen.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvf', 'qvd' for each File in filelist (Root&'/*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'/*' ) call DoDir (Dir) next Dir end sub call DoDir ('lib://DataFiles')

Voorbeeld 3: Itereren door de waarden van een veld

Dit voorbeeld itereert door de waarden van geladen waarden van FIELD en genereert een nieuw veld, NEWFIELD. Voor elke waarde van FIELD, worden twee NEWFIELD-records gemaakt.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

De resulterende tabel ziet er als volgt uit:

Example table
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

Meer informatie

 

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!